package com.groupfour.attendancemanagementsystem.service;

import com.groupfour.attendancemanagementsystem.entity.DTO.CRUClassesDTO;
import com.groupfour.attendancemanagementsystem.entity.VO.RClassesVO;
import com.groupfour.attendancemanagementsystem.entity.VO.RDepartmentVO;
import com.groupfour.attendancemanagementsystem.entity.VO.RMajorVO;
import com.groupfour.attendancemanagementsystem.entity.VO.RTeacherVO;

import java.util.List;
import java.util.Map;

public interface ClassesService {

    /**
     * @author 卑微小峰
     * @return List<RDepartmentDTO>
     * @describe 查询所有院系
     */
    List<RDepartmentVO> selectAllDepartment();

    /**
     * @author 卑微小峰
     * @param departmentCode
     * @return List<RMajorDTO>
     * @describe 查询所有专业（全校或某一院系）
     */
    List<RMajorVO> selectAllMajor(String departmentCode);

    /**
     * @author 卑微小峰
     * @return List<String>
     * @describe 查询所有在职教师姓名
     */
    List<RTeacherVO> selectAllTeacherNameByEmploymentStatus();

    /**
     * @author 扶永超
     * @param cruClassesDTO
     * @return int
     * @describe 添加班级信息
     */
    int addClasses(CRUClassesDTO cruClassesDTO);

    /**
     * @author 扶永超
     * @param cruClassesDTO
     * @param classesCode
     * @return int
     * @describe 修改班级信息
     */
    int updateClasses(CRUClassesDTO cruClassesDTO, String classesCode);

    /**
     * @author 扶永超
     * @param cruClassesDTO
     * @return List<RClassesDTO>
     * @describe 查询班级信息
     */
    Map<String,Object> selectClasses(CRUClassesDTO cruClassesDTO, Integer pageNum, Integer pageSize);

    /**
     * @author 卑微小峰
     * @param classesCode
     * @return CRUClassesVO
     * @describe 查询指定班级信息（用于修改页面显示数据）
     */
    RClassesVO selectClassesByClassesCode(String classesCode);
}
